package com.iotechn.unimall.data.mapper;

import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.iotechn.unimall.data.domain.SkuDO;
import com.iotechn.unimall.data.dto.excel.SkuInfoDTO;
import com.iotechn.unimall.data.dto.excel.SkuTotalPriceDTO;
import com.iotechn.unimall.data.dto.excel.SkuTotalSummaryDTO;
import com.iotechn.unimall.data.dto.goods.GoodsDaySaleDTO;
import com.iotechn.unimall.data.dto.goods.GoodsNameSelectDTO;
import com.iotechn.unimall.data.dto.goods.SkuDTO;
import com.iotechn.unimall.data.dto.purchase.PurchaseSkuDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Created by rize on 2019/7/2.
 */
public interface SkuMapper extends BaseMapper<SkuDO> {

    SkuDTO getSkuDTOById(Long skuId);

    Integer decSkuStock(@Param("skuId") Long skuId, @Param("stock") Float stock);

    Integer returnSkuStock(@Param("skuId") Long skuId, @Param("stock") Float stock);

    Integer decSkuFreezeStock(@Param("skuId") Long skuId, @Param("stock") Float stock);

    /**
     * 删除SPUID
     *
     * @param spuId
     * @return
     */
    List<Long> getSkuIds(@Param("spuId") Long spuId);

    List<Long> selectSkuIdsBySpuIds(@Param("ids") List<Long> ids);

    /**
     * 汇总商品的情况
     *
     * @param title
     * @param warehouseIds
     * @return
     */
    List<SkuDTO> selectAllSkuList(@Param("title") String title, @Param("warehouseIds")  List<Long> warehouseIds,@Param("offset") Integer offset, @Param("limit") Integer limit);

    Long selectAllSkuListCount(@Param("title") String title, @Param("warehouseId") Long warehouseId);

    List<SkuDTO> listAllSkus(@Param("marketingChannelList") List<Integer> marketingChannelList);

    //所有商品销量统计
    List<GoodsDaySaleDTO> listSkuDaySale(@Param("offset") Integer offset, @Param("size") Integer size);

    //所有商品销量统计合计
    Integer countSkuDaySale();

    //搜索sku
    List<SkuDTO> searchSku(@Param("search") String search);


    /**
     * 查看上架商品SKU的情况
     *
     * @param title
     * @return
     */
    List<SkuDTO> selectIndexSkuList(@Param("title") String title, @Param("offset") Integer offset, @Param("limit") Integer limit);

    /**
     * 采购端商品信息
     *
     * @param selectStr
     * @param offset
     * @param limit
     * @return
     */
    List<PurchaseSkuDTO> purchaseSkuSelect(@Param("selectStr") String selectStr, @Param("offset") Integer offset, @Param("limit") Integer limit);

    //用于导出
    List<SkuTotalSummaryDTO> selectSkuForSummary(@Param("search") String search, @Param("offset") Integer offset, @Param("limit") Integer limit);

    //用于导出
    Integer countSkuForSummary(@Param("search") String search);

    //统计期初库存/期末库存
       List<SkuTotalPriceDTO> summaryGoods(@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("skuIds") List<Long> skuIds, @Param("barCodes") List<String> barCodes);
    //根据商品全称模糊查商品skuid
    List<GoodsNameSelectDTO> selectSkuIdByName(String goodsName);

    List<SkuInfoDTO> selectSkuListByIds(@Param("skuIds") List<Long> skuIds);

    Integer updateStoreSkuPrice(@Param("skuIds") List<Long> skuIds,@Param("storeIds") List<Long> storeIds);

    /** 采购单查询商品  获取推荐价 */
    List<SkuDTO> getPurSkuByIdS(@Param("pOrderNo") String pOrderNo);

    /** 批量修改 sku状态 */
    Integer updateSkuListSatus(@Param("skuIds") List<Long> skuIds, @Param("status") Integer status);
}
